package com.bw.edu.controller;

import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.bw.edu.service.OrderCargoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;
import java.util.Map;

@RestController
public class OrderCargoController {

    @Autowired
    OrderCargoService orderCargoService;

  //各省份运单综合统计：依据发件省份，统计下单事实表中不同省份运单数量和运单金额
    @RequestMapping("getTmsListByProvince")
    public JSONObject getTmsListByProvince(){
        List<Map> list=orderCargoService.getTmsListByProvince();
        JSONObject jsonObject=new JSONObject();
        jsonObject.put("status",0);
        jsonObject.put("msg","");
        // 第二层  json对象{ }
        JSONObject data=new JSONObject();
        // 第3层 json数组  [ ]
        JSONArray mapData=new JSONArray();
        for (Map map : list) {
            JSONObject jsonObject1=new JSONObject();
            jsonObject1.put("name",map.get("name"));
            jsonObject1.put("value",map.get("order_num"));
            // 第4层  json数组 装载的除了上面下单次数外展示的其他的值
            JSONArray tooltipValues=new JSONArray();
            tooltipValues.add(map.get("order_amount"));
            jsonObject1.put("tooltipValues",tooltipValues);

            mapData.add(jsonObject1);//循环把每一个对象装载到数组中
        }

        data.put("mapData",mapData);
        data.put("valueName","运单数量");
        // 第3层 json数组  额外展示的字段 除了上面运单数量  还需要展示谁>?
        JSONArray tooltipNames=new JSONArray();
        tooltipNames.add("运单金额");
        data.put("tooltipNames",tooltipNames);
        // 第3层 json数组
        JSONArray tooltipUnits=new JSONArray();
        tooltipUnits.add("元");
        data.put("tooltipUnits",tooltipUnits);

        jsonObject.put("data",data);
        return jsonObject;
    }

    //统计物流运单相关总数（接单数、发单数、完成运单数）存储过程 sql
    @RequestMapping("getTmsList01")
    public JSONObject getTmsList01(){
        Map map=orderCargoService.getTmsList01();
        JSONObject jsonObject=new JSONObject();
        jsonObject.put("status",0);
        jsonObject.put("msg","");
        // 第二层  json对象[]
        JSONArray data=new JSONArray();
        JSONObject jsonObject1=new JSONObject();
        jsonObject1.put("name","接单总数");
        jsonObject1.put("value",map.get("order_num1"));
        data.add(jsonObject1);

        JSONObject jsonObject2=new JSONObject();
        jsonObject2.put("name","发单总数");
        jsonObject2.put("value",map.get("order_num2"));
        data.add(jsonObject2);

        JSONObject jsonObject3=new JSONObject();
        jsonObject3.put("name","完成运单数");
        jsonObject3.put("value",map.get("order_num3"));
        data.add(jsonObject3);

        jsonObject.put("data",data);
        return jsonObject;
    }

    //  sql语句查询的结果 多行 多列  大屏展示是: 表格  地图  折线 柱状图 方法的返回值就是 List<Map>
    //  sql语句返回值是单行单列   大屏展示的是 翻牌器  返回值就是 Map  或者具体的类型Double  Integer..
    // sql语句的返回值是单行多列 (注意区分有些sql本来应该返回多行因为数据的问题只返回一行)  大屏:核心指标  返回值map
}
